#ifndef __LIST2CPP_varname
#define __LIST2CPP_varname
#include<string>

inline constexpr unsigned long varname_size = 94;


inline std::string varname_arr[varname_size] = {
"#include<iostream>",
"#include<string>",
"#include\"list2cpp.hpp\"",
"",
"int main(int argc, char **argv) {",
"    if(argc !=3 && argc != 5) {",
"        std::cerr << argv[0] << \": Requires 4 arguments file output varname type (c or s or b)\\n Or requires two arguments and reads from stdin and prints to stdout\\n$ \" << argv[0] << \" sourcefile outputfile variablename s\\n$ cat sourcefile | \" << argv[0] << \" varname s\\nTo use greater than sorting add a g type variable:\\n$ \" << argv[0] << \" inputfile outputfile varname cg\\n\" << \"For less than add l to type variable like this:\\n$ \" << argv[0] << \" inputfile outputfile varname sl\\n\";",
"        exit(EXIT_FAILURE);",
"    }",
"    if(argc == 5) {",
"        lst::OutputList str_list;",
"        str_list.setSkip(false);",
"        std::string arg_chk = argv[2];",
"        if(arg_chk.length()>1 && arg_chk[1] == 'p')",
"            str_list.setSkip(true);",
"        if(str_list.addFile(argv[1])) {",
"            lst::ListType listvar;",
"            std::string arg = argv[4];",
"            if(argv[4][0] == 'c')",
"                listvar = lst::ListType::CHAR;",
"            else if(argv[4][0] == 'b')",
"                listvar = lst::ListType::BINARY;",
"            else if(argv[4][0] == 's')",
"                listvar = lst::ListType::STRING;",
"            ",
"            if(str_list.validName(argv[3]) == false) {",
"                std::cerr << \"Invalid variable name, must start with a letter and only contain digits and alpha characters.\\n\";",
"                exit(EXIT_FAILURE);",
"            }",
"",
"            if(arg.length() > 1 && arg[1] == 'g')",
"                str_list.sort(true);",
"            else if(arg.length() > 1 && arg[1] == 'l')",
"                str_list.sort(false);",
"            else if(arg.length() > 1 && arg[1] == 'p')",
"                str_list.setSkip(true);",
"            ",
"            if(str_list.outputToFile(argv[2],argv[3], listvar)) {",
"                std::cout << \"Sucessfully output list to: \" << argv[2] << \"\\n\";",
"                std::cout << \"Input: \" << argv[1] << \"\\n\";",
"                std::cout << \"Output: \" << argv[2] << \"\\n\";",
"                std::cout << \"Variables: \" << argv[3] << \"_arr and \" << argv[3] << \"_size\"<< \"\\n\";",
"                if(listvar == lst::ListType::STRING) {",
"                    std::cout << \"Varaible type: std::string\\n\";",
"                } else if(listvar == lst::ListType::CHAR) {",
"                    std::cout << \"Variable type: const char *\\n\";",
"                } else if(listvar == lst::ListType::BINARY) {",
"                    std::cout << \"Varaible type: char array[]\\n\";",
"                }",
"            } else {",
"                std::cout << \"Encountered an error..\\n\";",
"            }",
"        } else {",
"            std::cerr << \"Error could not load list from text file: \" << argv[1] << \"\\n\";",
"            exit(EXIT_FAILURE);",
"        }",
"    } else if(argc == 3) {",
"        lst::OutputList str_list;",
"        str_list.setSkip(false);",
"        std::string arg_chk = argv[2];",
"        if(arg_chk.length()>1 && arg_chk[1] == 'p')",
"            str_list.setSkip(true);",
"        ",
"        ",
"        if(str_list.addStream(std::cin)) {",
"            lst::ListType listvar;",
"            ",
"            std::string arg = argv[2];",
"            if(arg[0] == 'c')",
"                listvar = lst::ListType::CHAR;",
"            else if(arg[0] == 's')",
"                listvar = lst::ListType::STRING;",
"            else if(arg[0] == 'b')",
"                listvar = lst::ListType::BINARY;",
"            ",
"            if(arg.length() > 1 && arg[1] == 'g')",
"                str_list.sort(true);",
"            else if(arg.length() > 1 && arg[1] == 'l')",
"                str_list.sort(false);",
"          ",
"            ",
"            ",
"            if(str_list.validName(argv[1]) == false) {",
"                std::cerr << \"Invalid variable name, must start with a letter and only contain digits and alpha characters.\\n\";",
"                exit(EXIT_FAILURE);",
"            }",
"            ",
"            if(str_list.outputToFile(std::cout,argv[1], listvar) == false) {",
"                std::cout << \"Failed to output stream...\\n\";",
"            }",
"        }",
"    }",
"    return 0;",
"}"
};


#endif

